home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 147 / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z / Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin / tools / ivl / src / easymac.h < prev    next >
Text File  |  2000-02-27  |  3KB  |  88 lines

  1. #if    !defined(EASYMAC_H_HAS_INCLUDED)
  2. #define    EASYMAC_H_HAS_INCLUDED
  3. /*
  4. *    (一応)汎用(かも知れない)安易マクロ定義集
  5. *
  6. *    programed by dummy.x.    from Feb.17,1997
  7. */
  8. #include    <stdio.h>
  9. #include    <stdlib.h>
  10.  
  11. /* 安易マクロ */
  12.     /* 文字列が空文字列か調べる */
  13. #define    is_null_str(st)    (*(st) == '\0')
  14.     /* 数値の絶対値を得る */
  15. #define    _ABS(val)    (((val) < 0)? -(val): (val))
  16.     /* 数値の符号値を得る */
  17. #define    _SGN(val)    (((val) < 0)? -1: ((val) > 0)? +1: 0)
  18.     /* 範囲内にあるかどうか調べる */
  19. #define    _TWEEN(val, min, max)    ((val) >= (min) && (val) <= (max))
  20.     /* デバグ時処理
  21.     *    マクロ DEBUG が定義されたら引数をそのまま展開する
  22.     */
  23. #if    defined(DEBUG)
  24.  #define    _DEBUGJOB(cmnd)    cmnd
  25. #else    /* defined(DEBUG) */
  26.  #define    _DEBUGJOB(cmnd)    /* 空置換 */
  27. #endif    /* defined(DEBUG) */
  28.  
  29.     /* ビット操作 */
  30. #define    biton(bit)        (1 << (bit))        /* bit の立った値を取得 */
  31. #define    bitoff(bit)        (~biton(bit))        /* bit の寝た値を取得 */
  32. #define    chkbit(val, bit)    ((val) & biton(bit))    /* 指定ビットの値を調べる */
  33. #define    tstbit(val, bit)    ((val) & biton(bit))    /* 指定ビットの値を調べる */
  34. #define    setbit(val, bit)    ((val) | biton(bit))    /* 指定ビットを立たせる */
  35. #define    clrbit(val, bit)    ((val) & ~biton(bit))    /* 指定ビットを寝かせる */
  36. #define    revbit(val, bit)    ((val) ^ biton(bit))    /* 指定ビットを反転する */
  37. #define    setbit_var(var, bit)    ((var) |= biton(bit))    /* 指定ビットを立たせた値を代入 */
  38. #define    clrbit_var(var, bit)    ((var) &= ~biton(bit))    /* 指定ビットを寝かせた値を代入 */
  39. #define    revbit_var(var, bit)    ((var) ^= biton(bit))    /* 指定ビットを反転した値を代入 */
  40.  
  41.     /* ワード値からバイト値を取得する */
  42. #define    lo_byte(val)    ((char)(val))
  43. #define    hi_byte(val)    ((char)((val) >> 8))
  44.     /* ロング値からワード値を取得する */
  45. #define    lo_word(val)    ((short)(val))
  46. #define    hi_word(val)    ((short)((val) >> 16))
  47.     /* ロング値からバイト値を取得する */
  48. #define    loe_byte_l(val)    ((char)(val))
  49. #define    lo_byte_l(val)    ((char)((val) >> 8))
  50. #define    hi_byte_l(val)    ((char)((val) >> 16))
  51. #define    hie_byte_l(val)    ((char)((val) >> 24))
  52.     /* ワード値2つからロング値を構成する */
  53. #define    sh2toln(h, l)    ((long)((short)(h) << 16) | (unsigned short)(l))
  54.     /* 複数のバイト値からワード/ロング値を構成する */
  55. #define    ch2tosh(h, l)    ((short)((char)(h) << 8) | (unsigned char)(l))
  56. #define    ch4toln(he, h, l,le)    (sh2toln(ch2tosh(he, h), ch2tosh(l, le)))
  57. #define    ch3toln(h, l,le)    ch4toln(0, h, l,le)
  58.  
  59.     /* ある特定範囲の乱数整数値を得る(rand() 使用) */
  60. #define    get_random_sizemin(size, min)    ((rand() % (size)) + (min))
  61. #define    get_random_sizemin2(size, min)    ((rand() & ((size) - 1)) + (min))
  62.                         /* size が 2のべき乗数なら使用可 */
  63. #define    get_random_minmax(min, max)    get_random_sizemin((max) - (min) + 1, min)
  64.  
  65.     /* 標準出力へ出力 */
  66. #define    oputc(ch)    fputc(ch, stdout)
  67. #define    oputs(st)    fputs(st, stdout)
  68.     /* 標準エラー出力へ出力 */
  69. #define    eputc(ch)    fputc(ch, stderr)
  70. #define    eputs(st)    fputs(st, stderr)
  71.  
  72.     /* 配列のデータ数を調べる
  73.     *    引数:    aryname    - 配列変数名
  74.     */
  75. #define    numberof(aryname)    (sizeof(aryname) / sizeof(aryname[0]))
  76.  
  77.     /* 確保されているメモリを解放する
  78.     *    引数:    mpvar    - 確保メモリアドレス保持変数名
  79.     */
  80. #define    free_mem(mpvar)    {if (mpvar != NULL) {free((void *)mpvar); mpvar = NULL;}}
  81.  
  82.     /* オープンされているファイルをクローズする
  83.     *    引数:    fpvar    - ファイルポインタ変数名
  84.     */
  85. #define    close_file(fpvar)    {if (fpvar != NULL) {fclose(fpvar); fpvar = NULL;}}
  86.  
  87. #endif    /* !defined(EASYMAC_H_HAS_INCLUDED) */
  88.